8. Exceptional Control Flow


ํ”„๋กœ์„ธ์„œ์˜ ์ปจํŠธ๋กค ํ”Œ๋กœ (Control Flow)๋Š” PC์˜ ๊ฐ’์ด ๋Š์ž„์—†์ด ์ฆ๊ฐ€ํ•˜๋ฉฐ ํ•ด๋‹น ์ฃผ์†Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์ฝ๋Š” ๊ณผ์ •์„ ์˜๋ฏธ. ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์˜ PC๊ฐ€ ๊ณ„์† 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ž–์•„. ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ถ„๊ธฐ, ๋ฐ˜๋ณต๊ณผ ๊ฐ™์€ jump๊ฐ€ ์žˆ๊ฒ ๋‹ค. ์ด ๊ฒฝ์šฐ PC๋Š” ์„œ๋กœ ์ธ์ ‘ํ•˜์ง€ ์•Š์€ ๋‘ ์ฃผ์†Œ ์‚ฌ์ด๋ฅผ ๋„˜๋‚˜๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ๋ถ„๊ธฐ๋‚˜ ๋ฐ˜๋ณต์˜ ๊ฒฝ์šฐ, ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€์˜ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ๋งŒ PC๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด๋ผ๋Š” ์ . ECF(Exceptional Control Flow)๋Š” ์‹œ์Šคํ…œ์˜ ์ƒํƒœ๋ณ€ํ™”์— ๋”ฐ๋ผ์„œ PC๋ฅผ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์„ ์ผ์ปซ๋Š”๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ

ECF๋Š” ์—ฌ๋Ÿฌ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ํ•˜๋“œ์›จ์–ด ๋‹จ์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ธฐ (exception handlers), OS ๋‹จ์—์„œ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋ฌธ๋งฅ์ „ํ™˜(Context Switching), ์œ ์ € ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ณด๋‚ด๋Š” ์‹œ๊ทธ๋„์ด ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฐœ๋ณ„์ ์ธ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ์ผ๋ฐ˜์ ์ธ ์‹คํ–‰ํ๋ฆ„์œผ๋กœ๋ถ€ํ„ฐ ๋ฒ—์–ด๋‚˜ side stepping์„ ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋˜๋Š” nonlocal jump ์ˆ˜ํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

ECF๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์˜ˆ์™ธ๋Š” ํ•˜๋“œ์›จ์–ด์™€ OS, ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ๊ต์ฐจ์ ์„ ์•Œ๊ฒŒ ํ•ด์ค€๋‹ค. ์‹œ์Šคํ…œ ์ฝœ๋กœ ํ•˜์—ฌ๊ธˆ OS์™€ ์œ ์ € ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ํ”„๋กœ์„ธ์Šค์™€ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค.

DUMP

MISC

8.2.3. Private Address Space ์—์„œ ์ฐธ์กฐํ•œ Process address space ๋„์‹ํ‘œ
Pasted image 20230908204804.png